package com.weijian.service;

import com.weijian.common.ApiResponse;
import com.weijian.dal.entity.UserSignIn;
import com.weijian.dal.dto.signin.SignInMonthlyRecord;
import com.weijian.dal.entity.UserSignInStats;

/**
 * 用户签到服务接口
 */
public interface SignInService {

    /**
     * 用户每日签到
     *
     * @param userId 用户ID
     * @return 签到结果
     */
    ApiResponse<UserSignIn> dailySignIn(Long userId);

    /**
     * 查询用户今日签到状态
     *
     * @param userId 用户ID
     * @return 今日是否已签到
     */
    ApiResponse<Boolean> getTodaySignStatus(Long userId);

    /**
     * 获取用户签到统计信息
     *
     * @param userId 用户ID
     * @return 签到统计信息
     */
    ApiResponse<UserSignInStats> getUserSignInStats(Long userId);

    /**
     * 获取用户指定月份的签到记录
     *
     * @param userId 用户ID
     * @param year   年份
     * @param month  月份
     * @return 签到记录列表
     */
    ApiResponse<SignInMonthlyRecord> getMonthlySignInRecord(Long userId, int year, int month);
}